home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Source Code / Mark Pilgrim / Mousebroken 1.0.1 / source / Modules source ƒ / Gravity mouse / Gravity module.c next >
Encoding:
C/C++ Source or Header  |  1994-10-30  |  1.1 KB  |  69 lines  |  [TEXT/KAHL]

  1. /* Gravity Mouse -- a Mousebroken mouse module */
  2. /* written 11/93 by Mark Pilgrim */
  3. /* This module placed in the public domain. */
  4.  
  5. #include "Retrace.h"
  6. #include "GestaltEQU.h"
  7.  
  8. extern Boolean CrsrNew : 0x8CE;
  9. extern Point mTemp : 0x828;
  10.  
  11. Rect            gMainScreenBounds;
  12. unsigned long    me;
  13. Boolean            fallingNow;
  14. int                gap;
  15.  
  16. void header(void);
  17. void main(void);
  18.  
  19. void header(void)
  20. {
  21.     asm
  22.     {
  23.         dc.l    0
  24.         move.l a0, d0
  25.         lea header, a0
  26.         jmp main
  27.     }
  28. }
  29.  
  30. #include "SetUpA4.h"
  31.  
  32. void main(void)
  33. {
  34.     VBLTask*        myVBL;
  35.     long            gestalt_temp;
  36.     OSErr            isHuman;
  37.     Boolean            gHasColorQD;
  38.     
  39.     RememberA0();
  40.     SetUpA4();
  41.     
  42.     asm
  43.     {
  44.         move.l d0, myVBL
  45.     }
  46.     
  47.     if (me != 'MMdl')
  48.     {
  49.         isHuman = Gestalt(gestaltQuickdrawVersion, &gestalt_temp);
  50.         gHasColorQD = !(isHuman || (gestalt_temp < gestalt8BitQD));
  51.         gMainScreenBounds = (gHasColorQD) ? (**GetMainDevice()).gdRect : screenBits.bounds;
  52.         me = 'MMdl';
  53.         fallingNow=FALSE;
  54.     }
  55.     
  56.     if (!fallingNow)
  57.         gap=1;
  58.     
  59.     fallingNow=TRUE;
  60.     mTemp.v+=gap/5;
  61.     if (mTemp.v>gMainScreenBounds.bottom)
  62.         fallingNow=FALSE;
  63.     gap++;
  64.     CrsrNew = TRUE;
  65.  
  66.     myVBL->vblCount = (fallingNow) ? 1 : ((TickCount()&0x7fffffff)%4096)+2500;
  67.     RestoreA4();
  68. }
  69.